// HTTP请求库
import axios from "axios";

/**
 * 创建axios实例 - 配置基础URL和超时时间
 */
export const request = axios.create({
  baseURL: "/api",    // API基础路径
  timeout: 10000,     // 请求超时时间（毫秒）
});

/**
 * 创建Moonshot API专用实例
 */
export const moonshotRequest = axios.create({
  baseURL: "https://api.moonshot.cn/v1",    // Moonshot API基础路径
  timeout: 30000,     // 请求超时时间（毫秒）
});

/**
 * 请求拦截器 - 在发送请求前进行处理
 */
request.interceptors.request.use(
  (config) => {
    // 打印请求信息到控制台（开发调试用）
    console.log('发送请求:', {
      method: config.method,    // 请求方法
      url: config.url,          // 请求URL
      data: config.data,        // 请求数据
      params: config.params     // 请求参数
    });
    return config;
  },
  (error) => {
    // 请求错误处理
    console.error('请求错误:', error);
    return Promise.reject(error);
  }
);

/**
 * Moonshot API 请求拦截器
 */
moonshotRequest.interceptors.request.use(
  (config) => {
    // 添加Authorization头
    const apiKey = import.meta.env.VITE_MOONSHOT_API_KEY;
    console.log('API密钥状态:', {
      hasApiKey: !!apiKey,
      apiKeyLength: apiKey ? apiKey.length : 0,
      isDefaultValue: apiKey === 'your_moonshot_api_key_here'
    });
    
    if (apiKey && apiKey !== 'your_moonshot_api_key_here') {
      config.headers.Authorization = `Bearer ${apiKey}`;
    } else {
      console.warn('⚠️ 警告: 未设置有效的Moonshot API密钥');
      console.warn('请在项目根目录创建 .env.local 文件并添加: VITE_MOONSHOT_API_KEY=你的实际API密钥');
    }
    
    // 打印请求信息到控制台（开发调试用）
    console.log('发送Moonshot请求:', {
      method: config.method,
      url: config.url,
      data: config.data,
      params: config.params,
      hasAuthHeader: !!config.headers.Authorization
    });
    return config;
  },
  (error) => {
    console.error('Moonshot请求错误:', error);
    return Promise.reject(error);
  }
);

/**
 * 响应拦截器 - 在收到响应后进行处理
 */
request.interceptors.response.use(
  (response) => {
    // 打印响应信息到控制台（开发调试用）
    console.log('收到响应:', {
      status: response.status,      // 响应状态码
      data: response.data,          // 响应数据
      url: response.config.url      // 请求URL
    });
    return response;
  },
  (error) => {
    // 响应错误处理
    console.error('响应错误:', {
      status: error.response?.status,    // 错误状态码
      data: error.response?.data,        // 错误数据
      message: error.message,            // 错误消息
      url: error.config?.url             // 请求URL
    });
    return Promise.reject(error);
  }
);

/**
 * Moonshot API 响应拦截器
 */
moonshotRequest.interceptors.response.use(
  (response) => {
    console.log('收到Moonshot响应:', {
      status: response.status,
      data: response.data,
      url: response.config.url
    });
    return response;
  },
  (error) => {
    console.error('Moonshot响应错误:', {
      status: error.response?.status,
      data: error.response?.data,
      message: error.message,
      url: error.config?.url
    });
    return Promise.reject(error);
  }
);

/**
 * GET请求方法
 * @param url 请求URL
 * @param params 请求参数
 * @returns Promise对象
 */
export const get = (url: string, params: any) => {
  return request.get(url, { params: params });
};

/**
 * DELETE请求方法
 * @param url 请求URL
 * @param params 请求参数
 * @returns Promise对象
 */
export const del = (url: string, params: any) => {
  return request.delete(url, { params: params });
};

/**
 * POST请求方法
 * @param url 请求URL
 * @param data 请求数据
 * @returns Promise对象
 */
export const post = (url: string, data: any) => {
  return request.post(url, data);
};

/**
 * Moonshot API POST请求方法
 * @param url 请求URL
 * @param data 请求数据
 * @returns Promise对象
 */
export const moonshotPost = (url: string, data: any) => {
  return moonshotRequest.post(url, data);
};

/**
 * PUT请求方法
 * @param url 请求URL
 * @param data 请求数据
 * @returns Promise对象
 */
export const put = (url: string, data: any) => {
  return request.put(url, data);
};
